블로그 릴레이 - 보안 그룹 설계시 고려하면 좋은 점
안녕하세요! AWS 사업 본부의 서은우입니다.
본 블로그는 당사의 한국어 블로그 릴레이의 12번째 블로그입니다.
이번 블로그의 주제는 「보안 그룹 설계시 고려하면 좋은 점」 입니다.
생성 가능한 보안 그룹 규칙의 할당량에 대해
1개의 보안 그룹에 대해 생성 가능한 인/아웃 바운드 규칙의 기본값은 60개 입니다.
보통의 경우에는 기본 값인 60개만으로도 보안 그룹의 규칙을 설계함에 있어 부족함이 없다고 생각하지만,
요건에 따라서 더욱 많은 수의 인/아웃바운드 규칙의 설정이 필요할 때가 있습니다.
보안 그룹 규칙의 생성 한도를 60개 이상으로 늘리고 싶은 경우 Service Quotas 에서 할당량 증가를 요청할 수 있습니다만,
전체 할당량에 제한이 있기 때문에 보안 그룹 규칙을 설계할 때 생성 한도를 넘지 않도록 주의할 필요가 있습니다.
보안 그룹 규칙 할당량
이 할당량은 인바운드 규칙과 아웃바운드 규칙에 개별적으로 적용됩니다. 규칙 60개의 기본 할당량을 가진 계정의 경우 보안 그룹은 인바운드 규칙 60개와 아웃바운드 규칙 60개를 가질 수 있습니다. 또한 이 할당량은 IPv4 및 IPv6 규칙에 개별적으로 적용됩니다. 규칙 60개의 기본 할당량을 가진 계정의 경우 보안 그룹은 IPv4 트래픽에 대한 인바운드 규칙 60개와 IPv6 트래픽에 대한 인바운드 규칙 60개를 가질 수 있습니다. 자세한 내용은 보안 그룹 크기 단원을 참조하십시오.
할당량 변경은 인바운드 규칙과 아웃바운드 규칙에 모두 적용됩니다. 이 할당량과 네트워크 인터페이스당 보안 그룹의 할당량을 곱한 값이 1,000을 초과하면 안 됩니다.
위의 공식 문서에서 설명대로 보안 그룹별 인/아웃 바운드 규칙의 할당량은 네트워크 인터페이스당 생성가능한 보안 그룹 수와 보안 그룹당 생성가능한 보안 그룹 규칙 수의 곱으로 계산할 수 있으며 그 값이 1,000을 초과하지 않는 범위 내에서 할당량 증가를 요청할 수 있습니다.
고려할 점
Managed prefix list 는 규칙 1개로 계산되지 않는다
Managed prefix list 는 여러 CIDR 블록을 하나의 세트로 묶어 놓은 것으로 보다 많은 수의 IP 주소들을 관리하기 위해 사용됩니다.
예를 들어 아래 사진과 같이 보안 그룹에 설정이 필요한 IP들을 Managed prefix list로 생성하여 사용하면 3개 IP 주소를 하나하나 설정할 필요 없이 하나의 prefix list만으로 간단하게 보안 그룹의 인/아웃 바운드 규칙을 설정할 수 있습니다.
Managed prefix list을 사용한다면 AWS 콘솔 화면에서는 1개의 보안 그룹 규칙만이 표시되기 때문에 해당 규칙이 할당량 1개에 해당한다고 생각될 수 있지만,
사실은 prefix list에 등록된 IP의 개수만큼 보안 그룹 규칙이 생성된 것으로 계산됩니다.
즉, 보안 그룹 규칙 할당량이 60개인 보안 그룹에 3개의 IP가 등록 되어 있는 Managed prefix list를 하나 설정했을 경우, 57개의 규칙을 더 생성할 수 있기 때문에 Managed prefix list를 사용할 때에는 얼마만큼 규칙을 더 생성할 수 있는지 계산에 주의해주세요.
200개 이상의 인/아웃 바운드 규칙을 설정해야할 때
보통의 경우에는 Service Quotas 에서 할당량 증가를 요청하면 되지만,
하나의 보안 그룹에 200개 이상의 보안 그룹 규칙의 설정이 필요한 경우에는 별도의 대응이 필요합니다.
위에서 확인해본 AWS 공식 문서의 내용에서 알 수 있듯이 보안 그룹 규칙의 할당량은 ENI당 생성 가능한 보안 그룹 개수에 영향을 받습니다. 기본적으로 ENI당 생성 가능한 보안 그룹의 할당량은 5개로 설정되어 있습니다. (즉, 하나의 EC2에 최대 5개의 보안 그룹을 설정할 수 있습니다)
때문에 보안 그룹 규칙 할당량을 200개 이상으로 설정하고 싶은 경우 ENI당 생성 가능한 보안 그룹 개수 * 보안 그룹당 생성 가능한 규칙 개수는 1000을 초과할 수 없다라는 제한 사항에 의해 Service Quotas에서의 증가 요청을 할 수 없습니다.
(5(ENI당 생성 가능한 보안 그룹 개수) * 200(보안 그룹당 생성 가능한 규칙 개수) = 1000)
그렇기 때문에 이를 위해서는 아래의 2가지 방법 중 하나의 방법의 사용을 고려할 수 있습니다.
- ENI당 생성 가능한 보안 그룹 할당량을 줄인다
- 큰 범위의 CIDR 블록을 사용한다
1. ENI당 생성 가능한 보안 그룹 할당량을 줄인다
ENI당 생성 가능한 보안 그룹의 할당량은 생성 가능한 규칙의 할당량과 마찬가지로 Service Quotas에서 할당량 변경을 신청할 수 있습니다.
예를 들어, ENI당 생성 가능한 보안 그룹의 할당량을 기본값인 5에서 3으로 줄이게 된다면 생성 가능한 규칙의 할당량을 최대 333개까지 설정할 수 있습니다.
(3(ENI당 생성 가능한 보안 그룹 개수) * 333(보안 그룹당 생성 가능한 규칙 개수) = 999)
하지만 이렇게 되면 하나의 EC2 인스턴스에 최대 3개의 보안 그룹만을 설정할 수 있게 되기 때문에 보다 많은 보안 그룹을 사용이 필요한 환경에는 적절하지 않은 방법이 될 수 있습니다.
2. 큰 범위의 CIDR 블록을 사용한다
ENI당 할당 가능한 보안 그룹의 수를 줄일 수 없는 경우, 여러 보안 그룹 규칙에서 중복되는 CIDR 범위를 더 큰 범위의 CIDR 블록으로 묶어 설정이 필요한 전체 보안 그룹 규칙의 수를 줄이는 방법을 생각할 수 있습니다.
예를 들어, 10.0.0.0/24, 10.0.1.0/24의 CIDR 블록에 대해서는 2개의 보안 그룹 규칙을 생성해야하지만, 더욱 큰 CIDR 블록인 10.0.0.0/23 로 그 범위를 늘릴 경우 생성해야할 보안 규칙 그룹을 1개로 줄일 수 있습니다.
이렇듯 중복되는 CIDR 범위 IP 주소를 큰 범위의 CIDR 블록으로 묶게 된다면 생성이 필요한 보안 그룹 규칙의 전체 개수를 줄일 수 있게됩니다.
마무리
이상, 한국어 블로그 릴레이의 12번째 블로그 「보안 그룹 설계시 고려하면 좋은 점」 편이었습니다.
보안 그룹을 설계할 때에 얼마나 많은 수의 규칙을 생성해야하는지 파악하는 것이 중요하다고 생각합니다. 각 환경마다 상황이 다 다르기 때문에 그에 맞는 전략을 세우는 것이 중요하다고 생각합니다.
끝까지 읽어주셔서 감사합니다! AWS 사업 본부의 서은우였습니다.
이상, 한국어 블로그 릴레이의 12번째 블로그 「보안 그룹 설계시 고려하면 좋은 점」 편이었습니다.
끝까지 읽어주셔서 감사합니다! AWS 사업 본부의 서은우였습니다.